#include "point.h"

#ifndef __M3DGEOEMTRY_H
#define __M3DGEOEMTRY_H

namespace m3d
{
	typedef char M3DAXISINDEX;	// Values as vector element indices
	static const M3DAXISINDEX	AXISINDEX_X = 0;
	static const M3DAXISINDEX	AXISINDEX_Y = 1;
	static const M3DAXISINDEX	AXISINDEX_Z = 2;

	typedef char M3DAXISFLAG;
	static const M3DAXISFLAG	AXISFLAG_X = 1;
	static const M3DAXISFLAG	AXISFLAG_Y = 2;
	static const M3DAXISFLAG	AXISFLAG_Z = 4;

#pragma pack( push, 1 )
	struct SPivot
	{
		SVector3F	Position;
		SQuaternion	Orientation;
		SVector3F	Scale;
	};

	struct STransform
	{
		SMatrix4	Matrix;
		SMatrix4	MatrixInverse;
	};
#pragma pack( pop )

	SVector3F SphericalToCartesian( double x, double y, double radius );
};

#endif // _M3DGEOEMTRY_H